<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
 <head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title>Watcher callbacks</title>

 </head>
 <body><div class="manualnavbar" style="text-align: center;">
 <div class="prev" style="text-align: left; float: left;"><a href="ev.watchers.html">Watchers</a></div>
 <div class="next" style="text-align: right; float: right;"><a href="ev.periodic-modes.html">Periodic watcher operation modes</a></div>
 <div class="up"><a href="book.ev.html">Ev</a></div>
 <div class="home"><a href="index.html">PHP Manual</a></div>
</div><hr /><div id="ev.watcher-callbacks" class="chapter">
 <h1>Watcher callbacks</h1>

 <p class="para">
  All watchers can be active(waiting for events) or inactive(paused). Only
  active watchers will have their callbacks invoked. All callbacks will be
  called with at least two arguments:
  <em><code class="parameter">watcher</code></em>
  - the watcher, and
  <em><code class="parameter">revents</code></em>
  a bitmask of received events.
 </p>
 <p class="para">
  Watcher callbacks are passed to the watcher contructors(the classes derived
  from
  <a href="class.evwatcher.html" class="classname">EvWatcher</a>
  -
  <span class="methodname"><a href="evcheck.construct.html" class="methodname">EvCheck::__construct()</a></span>
  ,
  <span class="methodname"><a href="evchild.construct.html" class="methodname">EvChild::__construct()</a></span>
  etc.). A watcher callback should match the following prototype:
 </p>
 <div class="methodsynopsis dc-description">
  <span class="type"><span class="type void">void</span></span> 
  <span class="methodname"><strong>callback</strong></span>
   ([ <span class="methodparam">
   <span class="type">object</span>
    <code class="parameter">$watcher</code>
   <span class="initializer"> = NULL</span>
  </span>
  [, <span class="methodparam">
   <span class="type">int</span>
    <code class="parameter">$revents</code>
   <span class="initializer"> = NULL</span>
  </span>
 ]] )</div>

 <p class="para">
  <dl>

   
    <dt>

     <em><code class="parameter">watcher</code></em>
    </dt>

    <dd>

     <p class="para">
      The watcher instance(of a class extending
      <a href="class.evwatcher.html" class="classname">EvWatcher</a>
      ).
     </p>
    </dd>

   
   
    <dt>

     <em><code class="parameter">revents</code></em>
    </dt>

    <dd>

     <p class="para">
      <a href="class.ev.html#ev.constants.watcher-revents" class="link">Watcher received events</a>
      .
     </p>
    </dd>

   
  </dl>

 </p>
 <p class="para">
  Each watcher type has its associated bit in
  <em><code class="parameter">revents</code></em>
  , so one can use the same callback for multiple watchers. The event mask is
  named after the type, i.e.
  <a href="class.evchild.html" class="classname">EvChild</a>
  (or
  <span class="methodname"><a href="evloop.child.html" class="methodname">EvLoop::child()</a></span>
  ) sets
  <strong><code>EV::CHILD</code></strong>
  ,
  <a href="class.evprepare.html" class="classname">EvPrepare</a>
  (or
  <span class="methodname"><a href="evloop.prepare.html" class="methodname">EvLoop::prepare()</a></span>
  ) sets
  <strong><code>Ev::PREPARE</code></strong>
  ,
  <a href="class.evperiodic.html" class="classname">EvPeriodic</a>
  (or
  <span class="methodname"><a href="evloop.periodic.html" class="methodname">EvLoop::periodic()</a></span>
  ) sets
  <strong><code>Ev::PERIODIC</code></strong>
  and so on, with the exception of I/O events (which can set both
  <strong><code>Ev::READ</code></strong>
  and
  <strong><code>Ev::WRITE</code></strong>
  bits).
 </p>
</div>
<hr /><div class="manualnavbar" style="text-align: center;">
 <div class="prev" style="text-align: left; float: left;"><a href="ev.watchers.html">Watchers</a></div>
 <div class="next" style="text-align: right; float: right;"><a href="ev.periodic-modes.html">Periodic watcher operation modes</a></div>
 <div class="up"><a href="book.ev.html">Ev</a></div>
 <div class="home"><a href="index.html">PHP Manual</a></div>
</div></body></html>
